package com.example.design.factory;

import com.example.design.factory.impl.CardCommodityService;
import com.example.design.factory.impl.CouponCommodityService;
import com.example.design.factory.impl.GoodsCommodityService;

/**
 * @version 1.0.0
 * @className: StoreFactory
 * @description:
 * @author: rosszhang
 * @date: 2022/5/31 15:36
 */
public class StoreFactory {

    /**
     * 后续在新增的奖品只需要按照此结构进行填充即可，非常易于维护和扩展。
     * 在统一了入参以及出参后，调用方不在需要关心奖品发放的内部逻辑，按照统一的方式即可处理。
     *
     * @param commodityType:
     * @return com.example.design.factory.ICommodity
     * @author rosszhang
     * @date 2022/5/31 15:37
     */
    public ICommodity getCommodityService(Integer commodityType) {
        if (null == commodityType) {
            return null;
        }
        if (1 == commodityType) {
            return new CouponCommodityService();
        }
        if (2 == commodityType) {
            return new GoodsCommodityService();
        }
        if (3 == commodityType) {
            return new CardCommodityService();
        }
        throw new RuntimeException("不存在的商品服务类型");
    }
}
